红黑树与平衡二叉树(AVL)树

文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的动态,一起学习,共同进步

红黑树

定义:

1. 每个节点要么是红色,要么是黑色;

2. 所有的叶子结点是空结点,且都是黑色;

3. 如果一个结点是红色的,那么它的子节点都是黑色;

4. 根结点永远是黑色;

性质:

1. 红节点的孩子节点不能是红节点;

2. 从根到前端节点的任意一条路径上的黑节点一样多;

这两条性质确保该树的高度为logN,所以是平衡树。

       红黑树是每个节点都带颜色的树,节点的颜色要么红色要么黑色,红黑树是一种查找树。它还有一个重要性质,从根节点到叶子节点的最长路径不多于最短路径的两倍。对红黑树,插入,删除,查找的复杂度都为O(log N)。


平衡二叉树(AVL树)

定义:

1. 它的左子树和右子树都是AVL树;

2. 左子树和右子树的高度差不超过1;

性质:

1. AVL树的高度保持在O(log2(n))

2. 一个n个结点的AVL树的平均搜索长度保持在O(log2(n))

3. 一棵树n个节点的AVL树删除一个结点,做平衡旋转的时间为O(log2(n))


红黑树和平衡二叉树的比较:

       AVL 树是高度平衡的,频繁的插入和删除,会引起频繁的旋转,导致效率下降;红黑树不是高度平衡的,算是一种折中,插入最多两次旋转,删除最多三次旋转,相比来说,效率高一些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值